/**
 * 打包配置
 *
 * @param viteEnv 环境变量
 *
 * See: https://cn.vitejs.dev/config/build-options.html
 * @returns
 */
export function createBuild(mode: string): any {
  const IS_DEBUG = mode !== 'production'
  return {
    sourcemap: IS_DEBUG, // 是否启用
    outDir: 'dist', // 输出根文件夹名称
    minify: 'terser', // 混淆器, terser 构建后文件体积更小
    assetsInlineLimit: 1 * 1024, // 小于此阈值，导入或引用资源打包后将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
    chunkSizeWarningLimit: 500, // chunk 大小警告的限制（以 kbs 为单位）
    assetsDir: 'static', // 打包后的资源文件夹
    copyPublicDir: true,
    rollupOptions: {
      output: {
        entryFileNames: 'assets/js/[name].[hash].js',
        chunkFileNames: 'assets/js/[name].[hash].js',
        assetFileNames: 'assets/[ext]/[name].[hash].[ext]',
        manualChunks: {
          Vue: ['vue', 'vue-router', 'pinia'],
        }
      }
    },
    terserOptions: {
      // 压缩配置 See https://terser.org/docs/api-reference#minify-options
      compress: {
        drop_console: !IS_DEBUG, // 生产环境移除 console
        drop_debugger: !IS_DEBUG // 生产环境移除 debugger
      }
    }
  }
}
